<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:fsb="http://fsb.belgium.be/v1_01" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://fsb.belgium.be/v1_01" elementFormDefault="qualified" attributeFormDefault="qualified">
	<xs:element name="Ack">
		<xs:complexType>
			<xs:annotation>
				<xs:documentation>
					This type should be used to represent an Ack message
				</xs:documentation>
			</xs:annotation>
			<xs:sequence />
		</xs:complexType>
	</xs:element>
	<xs:simpleType name="CMessageIDType">
		<xs:annotation>
			<xs:documentation>
				This type represents a message ID which is constructed by the consumer
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:maxLength value="36"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="FSBMessageIDType">
		<xs:annotation>
			<xs:documentation>
				This type represents a message ID which is constructed by the FSB
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:maxLength value="36"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="PMessageIDType">
		<xs:annotation>
			<xs:documentation>
				This type represents a message ID which is constructed by the provider
			</xs:documentation>
		</xs:annotation>
		<xs:restriction base="xs:string">
			<xs:maxLength value="36"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="CallbackURLType">
		<xs:restriction base="xs:anyURI">
			<xs:maxLength value="250"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:complexType name="FaultType">
		<xs:sequence>
			<xs:element name="faultcode" type="xs:QName"/>
			<xs:element name="faultstring" type="xs:string"/>
			<xs:element name="faultactor" type="xs:anyURI" minOccurs="0"/>
			<xs:element name="detail" type="fsb:FaultDetailType" minOccurs="0"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="FaultDetailType">
		<xs:sequence>
			<xs:any namespace="##any" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
		<xs:anyAttribute namespace="##any" processContents="lax"/>
	</xs:complexType>
	<!-- Following elements are used for message exchange between consumer and FSB -->
	<xs:element name="SyncHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="SyncResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="AsyncPullHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="AsyncPullResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="AsyncCallbackHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
				<xs:element name="ReplyTo" type="fsb:CallbackURLType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="AsyncCallbackResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="FireAndForgetPullHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="FireAndForgetPullResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="FireAndForgetCallbackHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
				<xs:element name="FaultTo" type="fsb:CallbackURLType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="FireAndForgetCallbackResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="CMessageID" type="fsb:CMessageIDType"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="Fault" type="fsb:FaultType"/>
	<!-- Following messages are used for message exchange between the FSB and providers -->
	<xs:element name="PSyncHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="PSyncResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType" minOccurs="0"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="PAsyncCallbackHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="PAsyncCallbackResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="PFireAndForgetCallbackHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
	<xs:element name="PFireAndForgetCallbackResponseHeader">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="PMessageID" type="fsb:PMessageIDType" minOccurs="0"/>
				<xs:element name="FSBMessageID" type="fsb:FSBMessageIDType"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>